package com.deer.wms.system.manage.service;

import com.deer.wms.intercept.common.data.CurrentUser;
import com.deer.wms.project.root.core.result.Result;
import com.deer.wms.project.root.service.SuperService;
import com.deer.wms.system.manage.model.dept.Dept;
import com.deer.wms.system.manage.model.dept.DeptCriteria;
import com.deer.wms.system.manage.model.dept.DeptDto;

import java.util.List;


/**
 * @author guo
 * @since 2019/11/05
 */
public interface DeptService extends SuperService<Dept> {
    /**
     * 按照criteria条件查询
     *
     * @param criteria criteria
     * @return List<DeptDto>
     */
    List<DeptDto> findList(DeptCriteria criteria);

    /**
     * 依据部门编码查询
     *
     * @param deptCode deptCode
     * @return List<DeptDto>
     */
    List<DeptDto> findByDeptCode(String deptCode);

    /**
     * 依据部门名称查询
     *
     * @param deptName 部门名称
     * @return List<DeptDto>
     */
    List<DeptDto> findByDeptName(String deptName);

    /**
     * 依据父ID查询
     *
     * @param parentId 父ID
     * @return List<Dept>
     */
    List<Dept> findByParentId(Integer parentId);

    /**
     * @param list     列表
     * @param parentId 父ID
     * @return List<Integer>
     */
    List<Integer> treeMenuList(List<DeptDto> list, Integer parentId);

    /**
     * @param list
     * @param dept
     * @return
     */
    List<Integer> treeParentList(List<Dept> list, Dept dept);

    /**
     * 新增
     *
     * @param deptDto     部门信息
     * @param currentUser 创建人
     * @return Result
     */
    public Result createDept(DeptDto deptDto, CurrentUser currentUser);

    /**
     * 根据条件删除
     *
     * @param criteria criteria
     */
    void deleteByCodeAndCom(DeptCriteria criteria);


    /**
     * 部门树表
     * @return
     * @param pid
     */
    List<Dept> treeDept(Integer pid);


}
